package com.sky.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * 1. 当前模块名: sky-common    公共模块，存放公共类，例如: 工具类、常量类、配置类等
 * 2. 当前包名: com.sky.properties    存放与配置属性相关的类
 * 3. 当前类名: JwtProperties    JWT 配置类
 */

/**
 * JwtProperties; 用于读取和封装与 JWT（JSON Web Token）相关的配置信息。
 * 该类通过 Spring Boot 的 `@ConfigurationProperties` 注解，将配置文件中的属性值绑定到类的字段中。
 * 这里的配置包括管理端和用户端 JWT 令牌的密钥、有效期等相关配置。
 */
@Component
/**
 * 该注解表示 JwtProperties 是一个 Spring Bean，Spring 会自动扫描并将其注册为容器中的组件。通过注入该类，可以方便地访问应用中的配置。
 */
@ConfigurationProperties(prefix = "sky.jwt")
/**
 * 用于将 application.properties 或 application.yml 中的配置属性自动映射到 Java 类中。
 * prefix = "sky.jwt"：该注解指定了配置文件中以 sky.jwt 为前缀的属性会被自动映射到类中的字段。例如，sky.jwt.adminSecretKey 将被映射到 adminSecretKey 字段。
 */
@Data
/**
 * @Data 是 Lombok 提供的一个注解，用于自动生成该类的 getter、setter、toString()、equals() 和 hashCode() 等方法，减少样板代码。
 */
public class JwtProperties {

    /**
     * 管理端员工生成jwt令牌相关配置
     */
    private String adminSecretKey;// 管理端的 JWT 密钥
    private long adminTtl;// 管理端 JWT 令牌的有效期（单位：秒）
    private String adminTokenName;// 管理端 JWT 令牌的名称

    /**
     * 用户端微信用户生成jwt令牌相关配置
     */
    private String userSecretKey;// 用户端的 JWT 密钥
    private long userTtl;// 用户端的 JWT 密钥
    private String userTokenName;// 用户端 JWT 令牌的名称

}
/**
 * 仿写：
 *  ApiProperties; 用于读取和封装与 API 相关的配置信息。
 *  该类通过 Spring Boot 的 `@ConfigurationProperties` 注解，将配置文件中的属性值绑定到类的字段中。
 *  @Component
 *  @ConfigurationProperties(prefix = "sky.api")
 *  @Data
 * public class ApiProperties {
 *   private String baseUrl;  // API 的基础 URL
 *   private long timeout;  // API 请求的超时时间
 *   private String apiKey;  // 用于身份验证的密钥
 * }
 */